1. Field of the Invention
This invention relates to representing a hierarchical data structure and more particularly relates to efficiently managing membership within a hierarchical data structure.
2. Description of the Related Art
Computer systems users and administrators organize resources such as table spaces, file systems, computers, and databases. Sets or collections of resources are often organized into groups. Often groups include subgroups, which may in turn include subgroups. Relationships of resources and groups organized with multiple levels of groups are often referred to as hierarchical data structures or trees. In a hierarchical relationship, groups are often referred to as nodes. A typical example of a hierarchical data structure is a file structure on a computer. Such a file structure includes files represented as stored in folders. Any folder may include other folders as well as files. A top-level folder may include many levels of subfolders and each folder may include files. All of the folders and files along with the linking relationships between them form a hierarchical data structure or tree.
Hierarchical data structures allow computer system users and administrators to track critical applications, organize data for reports, and efficiently manage resources. For example, a supply chain application may use ten table spaces in a database that are critical to the business in addition to many other resources in a hierarchical data structure. Grouping the ten table spaces allows the application user to generate reports and monitor the ten table spaces to determine whether any of them are running out of space. Hierarchical grouping of resources allows a user to monitor the vital resources more closely than other less vital resources.
Hierarchical grouping is used in storage management systems like International Business Machine's (“IBM”) Tivoli Storage Resource Manger (“TSRM”). The TSRM is an intelligent console for storage management that provides a set of policy-driven, automated storage management tools that help a user understand capacity, availability, events, and assets in a storage management environment.
When forming a hierarchical data structure, a user or administrator may wish to include a resource or a group in more than one group. For example a file containing pricing and quantities of a part may be useful in a group used to monitor pricing as well as a group used to monitor quantities.
Allowing a group or resource to be part of another group makes tracking groups and member resources very complex. This is even more complicated when a resource can be included in a group by inheritance. Inheritance relationships are formed when a parent node having descendant nodes is added to another node in a hierarchy. The descendent nodes become descendents of the other node by inheritance. An inheritance relationship includes at least one intermediate parent node. For example, if file system A is part of group A and group A is added to group B, file system A becomes part of group B by inheritance. In other words, file system A is indirectly added to group B through group A. File system A may also be added to group B directly as well. If file system A is removed from group A, only the file system A reference in group A is removed and the file system A reference directly referenced in group B remains. This is a simple example. The relationships become more complex when many resources and groups are nested in the hierarchy.
Currently available systems to track membership in hierarchical data structures or trees use recursion. Recursion is a programming technique in which a routine calls itself repeatedly until a condition is met. Recursion is a powerful tool, but may strain a computer's resources. Rather than directly referencing a node's location in a hierarchical tree, current methods for accessing a node require recursion of a hierarchical tree which requires traversing the tree node by node. Recursively searching a hierarchical tree may require a large amount of computer resources.
From the foregoing discussion, it should be apparent that a need exists for an apparatus, system, and method to efficiently manage membership within a hierarchical data structure. Beneficially, such an apparatus, system, and method would efficiently use scarce computer resources by efficiently keeping track of members of a hierarchical data structure without recursion and in a non-hierarchical data structure. Use of a non-hierarchical data structure to represent a hierarchical data structure allows faster access of groups and resources and thus uses less computer resources than currently available methods of managing membership in a hierarchical data structure.